unit UUsuarioModel;

interface

uses UDM, DB, ADODB, SysUtils, Classes, Dialogs, UCriptografia;

type
  TUsuarioModel = class(TDMPrincipal)

    private
      FID: Integer;
      FUsuario: String;
      FResposta: String;
      FSenha: String;

      FADOQryUsuario: TADOQuery;

      function GetIDUsuario: Integer;
      function GetUsuario: String;
      procedure SetIDUsuario(const Value: Integer);
      procedure SetUsuario(const Value: String);


    protected

    public
      constructor Create;
      function Resposta(const Value: String): Boolean;
      function GetSenha: String;
      function GetUsuarioPergunta(Usuario: String): String;

      property ID: Integer read GetIDUsuario write SetIDUsuario;
      property Usuario: String read GetUsuario write SetUsuario;

  end;

implementation

{ TUsuarioModel }

constructor TUsuarioModel.Create;
begin
  FADOQryUsuario := TADOQuery.Create(nil);
  FADOQryUsuario.Connection := DMPrincipal.ADOConnection1;
end;

function TUsuarioModel.GetIDUsuario: Integer;
begin
  Result := FID;
end;

function TUsuarioModel.GetSenha: String;
begin
  Result := FSenha;
end;

function TUsuarioModel.GetUsuario: String;
begin
  Result := FUsuario;
end;

function TUsuarioModel.GetUsuarioPergunta(Usuario: String): String;
  var
    objDecripto: TCriptografia;
begin
  if(Usuario <> '')then
  begin
    FADOQryUsuario.Close;
    FADOQryUsuario.SQL.Clear;
    FADOQryUsuario.SQL.Text := 'SELECT usu_pergunta, usu_resposta, usu_senha FROM usuarios WHERE usu_apelido = ' + QuotedStr(Usuario);
    FADOQryUsuario.Open;
    if(FADOQryUsuario.RecordCount = 1)then
    begin
      objDecripto := TCriptografia.Create;
      Result := FADOQryUsuario.FieldByName('usu_pergunta').AsString;
      FResposta := FADOQryUsuario.FieldByName('usu_resposta').AsString;
      objDecripto.Decriptografia := FADOQryUsuario.FieldByName('usu_senha').AsString;
      FSenha := objDecripto.Decriptografia;
    end;
  end;

end;

function TUsuarioModel.Resposta(const Value: String): Boolean;
begin
  if(Value <> '')then
  begin
    if(Value <> FResposta)then
    begin
      Result := False;
    end
    else
    begin
      Result := True;
    end;
  end;
end;

procedure TUsuarioModel.SetIDUsuario(const Value: Integer);
begin
  if(Value > 0)then
  begin
    FADOQryUsuario.Close;
    FADOQryUsuario.SQL.Clear;
    FADOQryUsuario.SQL.Text := 'SELECT id_usuario FROM usuarios WHERE id_usuario = ' + IntToStr(Value);
    FADOQryUsuario.Open;
    if(FADOQryUsuario.RecordCount = 1)then
    begin
      FID := FADOQryUsuario.FieldByName('id_usuario').AsInteger;
    end;
  end;
end;

procedure TUsuarioModel.SetUsuario(const Value: String);
begin
  if(Value <> '')then
  begin
    FADOQryUsuario.Close;
    FADOQryUsuario.SQL.Clear;
    FADOQryUsuario.SQL.Text := 'SELECT usu_apelido FROM usuarios WHERE usu_apelido = ' + QuotedStr(Value);
    FADOQryUsuario.Open;
    if(FADOQryUsuario.RecordCount = 1)then
    begin
      FUsuario := FADOQryUsuario.FieldByName('usu_apelido').AsString;
    end;
  end;
end;

end.
 